Function approximation at high speeds with efficient use of computational and storage resources is required in a wide range of computing environments. Generally speaking, function approximation relates to the generation of an output based on an input and a given function. In applications such as digital signal processing (DSP), computer graphics, animation, virtual reality, neural networks, computer games, and others, function approximations are frequently performed and may be central to the operation of various systems. In many cases, function approximation must be carried out at high speeds using a limited amount of storage and processing resources. For example, accurate and fast computations of division, square root, exponentials, logarithms, trigonometric functions are capabilities important to many graphic processing units (GPUs), digital signal processors (DSPs), floating-point units (FPUs) of general-purpose processors, application specific integrated circuits (ASICs), and other computing devices.
To achieve high speed function approximation with efficient resource usage, methods based on table look-up of polynomial coefficients have become increasingly adopted. Here, the term “table” is used in a generic sense to refer to data storage implemented using software and/or hardware to allow data to be stored and later retrieved. For a particular input and a given function, an output may be generated by retrieving one or more polynomial coefficients using table look-up and performing calculations based on the input and the retrieved polynomial coefficient(s). For example, a linear approximation of an output f(X) corresponding to an input X may be performed by using a polynomial coefficient as a first term, multiplying another polynomial coefficient to the input to obtain a second term, and adding the first and second terms:f(X)≈C0+C1X 
As another example, a quadratic approximation of an output f(X) corresponding to an input X may be performed by using a first polynomial coefficient as a first term, multiplying a second polynomial coefficient with the input to obtain a second term, and multiplying a third polynomial coefficient with a squared value of the input to obtain a third term, and adding the first, second and third terms:f(X)≈C0+C1X+C2X2 
Of course, higher order approximations may also be performed by utilizing additional polynomial coefficients and calculations. In this manner, function approximation based on table look-up of polynomial coefficients is carried out by performing calculations based on the input and retrieved polynomial coefficients. Such procedures can approximate functions that may otherwise be far more difficult to evaluate.
The accuracy of function approximations based on table look-up of polynomial coefficients can be significantly impacted by the limited precision of the polynomial coefficients retrieved from look-up table(s). Typically, polynomial coefficients for a particular function are first calculated at a higher precision. To calculate the polynomials at the higher precision, various methods may be used. Just as an example, an iterative method that estimates a minimax solution, which minimizes the maximum error between the approximation and the original function, employing the Remez exchange algorithm, may be employed. Such an iterative estimation may be performed using commercially available computational software such as the computer algebra system Maple. Once the polynomial coefficients have been calculated at the higher precision, they may be rounded or truncated to a lower precision representation for storage in the look-up table(s).
There are compelling reasons for limiting the precision of the stored polynomial coefficients. Increasing the precision of the polynomial coefficients not only increases the size of the look-up tables, but also adds to the complexity of calculations based on the coefficients, which can translate to further increases in semiconductor area as well as reduced execution speed. Thus, the coefficients retrieved from the look-up table(s) and used for calculations leading to the function approximation are typically designed to have limited precision. At the same time, such limits on the precision of the polynomial coefficients can account for a considerable portion of the error in outcome of these function approximations. Thus, the design of function approximation systems based on table look-up of polynomial coefficients is made especially challenging given the need for reduced semiconductor area and execution speed, on one hand, and accurate function approximation results, on the other.
Generally speaking, the difficulties associated with use of limited-precision polynomial coefficients, such as those mentioned above, can be greatly ameliorated if the accuracy of function approximations can be improved in spite of the use of limited-precision polynomial coefficients. Some methods aimed at this objective have been proposed. However, these methods can either lead to numerical problems during the execution of iterative approximation of coefficient values or otherwise fail to produce useful limited-precision coefficients. What is needed is an effective technique for performing function approximation based on table look-up of limited-precision polynomial coefficients that improves the accuracy of the function approximation.